#ifndef CAMERA_H
#define CAMERA_H

#include "Common/Common.h"
#include "GameCore/Core.h"

class Camera : public core::IKeyboardListener
{

public:
	Camera();
	Camera( const cmn::Transform& pos, const cmn::Transform& vel, float scale );
	Camera( const Camera& camera );

	virtual ~Camera();

	inline float GetScale() const {
		return m_scale;
	}

	inline void SetScale( float value ) {
		m_scale = value;
	}

	virtual inline cmn::Transform GetPos() const {
		return m_pos;
	}

	virtual inline void SetPos( const cmn::Transform& value ) {
		m_pos = value;
	}

	virtual inline cmn::Transform GetVel() const {
		return m_vel;
	}

	virtual inline void SetVel( const cmn::Transform& value ) {
		m_vel = value;
	}

	virtual void Update( float dt );


	virtual void KeyPressed( core::KeyboardKey key );
	virtual void KeyReleased( core::KeyboardKey key );

private:
	cmn::Transform m_pos;
	cmn::Transform m_vel;
	float m_scale;
	float m_velFactor;
	float m_scaleFactor;

	static const float Speed;

	cmn::Vec2 GetAcceleration();
};
#endif
